<div th:fragment="headJS">
	
	<!-- jQuery  -->
    <script type="text/javascript" src="/static/plugins/jquery/jquery-3.6.0.min.js"></script>
	
	<!-- layui  -->
	<link rel="stylesheet" href="/static/plugins/layui/2.7.6/css/layui.css" media="all" />
	<script src="/static/plugins/layui/2.7.6/layui.js" charset="utf-8"></script>
<!--	<link rel="stylesheet" href="/static/plugins/layui/2.10.1/css/layui.css" media="all" />-->
<!--	<script src="/static/plugins/layui/2.10.1/layui.js" charset="utf-8"></script>-->
	
	<link rel="stylesheet" href="/static/admin/css/mini-ease-edit.css">
</div>


<div th:fragment="grid_base_js_and_css">
	<!-- 基本字典-->
	<script type="text/javascript" src="https://admin.mini-ease.com/upload/sys/dict.json"></script>
	
	<script src="/static/plugins/xm-select/xm-select.js" charset="utf-8"></script>
	
	<!-- jQuery-->
	<script type="text/javascript" src="/static/plugins/jquery/jquery-3.6.0.min.js"></script>
	
	<!-- layui-->
	<link rel="stylesheet" href="/static/plugins/layui/2.7.6/css/layui.css" media="all">
	<script src="/static/plugins/layui/2.7.6/layui.js" charset="utf-8"></script>
	<!-- layui-列表页特定风格-->
	<link rel="stylesheet" href="/static/admin/css/mini-ease.css?v=2025033101" media="all" />
	
	<!-- ysui-->
	<link rel="stylesheet" href="/static/plugins/ysui/1.0.0/css/ysui.css" media="all">
	
	<!-- common -->
	<link rel="stylesheet" href="/static/admin/css/common.css" media="all" />
	
	<!-- iconfont -->
	<link rel="stylesheet" href="/static/css/icon/iconfont.css" media="all" />

	<!-- 在1.0上跳转新页面需要 -->
	<script type="text/javascript" src="/static/admin/js/xadmin.js"></script>
	
	<!-- layui dtree -->
	<link rel="stylesheet" href="/static/plugins/layui/extends/dtree/dtree.css">
	<link rel="stylesheet" href="/static/plugins/layui/extends/dtree/font/dtreefont.css">
</div>


<div th:fragment="form_base_js_and_css">
	<!-- 基本字典-->
	<script type="text/javascript" src="https://admin.mini-ease.com/upload/sys/dict.json"></script>
	
	<script src="/static/plugins/xm-select/xm-select.js" charset="utf-8"></script>
	<!-- jQuery  -->
    <script type="text/javascript" src="/static/plugins/jquery/jquery-3.6.0.min.js"></script>
	<!-- layui  -->
	<link rel="stylesheet" href="/static/plugins/layui/2.7.6/css/layui.css" media="all" />
	<script src="/static/plugins/layui/2.7.6/layui.js" charset="utf-8"></script>
	<!-- form style -->
	<link rel="stylesheet" href="/static/admin/css/mini-ease-edit.css">
	<!-- ysui-->
	<link rel="stylesheet" href="/static/plugins/ysui/1.0.0/css/ysui.css" media="all">
	<!-- iconfont -->
	<link rel="stylesheet" href="/static/css/icon/iconfont.css" media="all" />
	<script type="text/html" id="toolbar_in_form"></script>
	<!-- TPL脚本，用于表单内 -->
	<div style="display: none;" id="id_tpl_templet_script_in_form"></div>
</div>

	
<div th:fragment="YsTree">
	<style>
	.card-body {padding: 0 0 0 1rem;}
	.card {font-size: 12px;}
	.tree_lft_show {height: 98vh; width: 17%; float: left;}
	.tree_lft_hide {display:none;}
	.tree_rgt_show {height: 100%; width: 83%; float: left;}
	.tree_rgt_hide {height: 100%; width: 100%; float: left;}
	.tree_node {padding: 2px 0; white-space: nowrap;}
	.tree_node_icon {display: none;}
	.tree_node:hover>.tree_node_icon{display: inline-block;}
	</style>
	<script type="text/ng-template" id="normalTree">
	<div class="card">
		<span class="tree_node" style="cursor: pointer;" ng-init="item.status = tree.defaultExpand">
			<i class="iconfont icon-plus-square" data-bs-toggle="collapse" href="#id_{{item.id}}" ng-if="item.sub.length > 0 && item.status != true" ng-click="item.status = !item.status"></i>
			<i class="iconfont icon-minus-square" data-bs-toggle="collapse" href="#id_{{item.id}}" ng-if="item.sub.length > 0 && item.status != false" ng-click="item.status = !item.status"></i>
			<i class="iconfont icon-kongbai" ng-if="!item.sub.length || item.sub.length == 0"></i>
			<span data-bs-toggle="collapse" href="#id_{{item.id}}" ng-click="tree.nodeClick(item)" ng-if="tree.nodeClickExCo == true">
				{{item.title}}
			</span>
			<span href="#id_{{item.id}}" ng-click="tree.nodeClick(item)" ng-if="tree.nodeClickExCo == false">
				{{item.title}}
			</span>
			<span class="tree_node_icon"><i class="iconfont" title="{{icon.title}}" ng-repeat="icon in tree.icons_node" ng-class="icon.icon" ng-click="tree.clickNodeIcon(icon.event, item)"></i></span>
		</span>
		<div id="id_{{item.id}}" class="collapse" ng-class="{'show': item.status == true}" data-bs-parent="#accordion_{{item.id}}">
			<div class="card-body" ng-if="item.sub.length > 0">
				<div id="accordion_{{ row.id }}" ng-repeat="row in item.sub" ng-include="'normalTree'" ng-init="item = row">
				</div>
			</div>
		</div>
	</div>
	</script>
</div>

<div th:fragment="YsModal">
	<!-- angular-file-upload -->
	<script type="text/javascript" src="/static/plugins/angular/extends/angular-file-upload/angular-file-upload.min.js"></script>
	
	<script type="text/javascript" src="/static/plugins/ysui/1.0.0/js/extends/YsModalRadio.js"></script>
	<script type="text/javascript" src="/static/plugins/ysui/1.0.0/js/extends/YsModalCheckbox.js"></script>
	<script type="text/javascript" src="/static/plugins/ysui/1.0.0/js/extends/YsModalMulty.js"></script>
	
	<!-- 单选弹出框 -->
	<div class="modal fade" id="modal_radio" ng-controller="YsModalRadioCtrl">
		<div class="modal-dialog" style="width: 90%; max-width: 1980px !important; height: 80%;">
			<div class="modal-content">
				<!-- 模态框头部 -->
				<div class="modal-header">
					<h4 class="modal-title">单选框标题</h4>
					<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
				</div>
				<!-- 模态框内容 -->
				<div class="modal-body" style="height: 80%;max-height: 70vh; overflow: auto;">
					<div>
						<form action="">
							<div class="row">
								<div class="col-sm-12 col-sm-6 col-md-2 mb-2" ng-repeat="condition in radio.conditions">
									<div class="d-inline-flex align-items-center" ng-if="condition.type == 't_text'">
										<label class="form-label form-label-ys-search">{{condition.name}}：</label>
										<input type="text" class="form-control form-control-ys-search" name="{{condition.code}}" required ng-model="condition.value">
									</div>
									<div class="d-inline-flex align-items-center" ng-if="condition.type == 't_dropdown'" style="width: 100%;">
										<label class="form-label form-label-ys-search">{{condition.name}}：</label>
										<select class="form-select form-select-sm form-select-ys-search" ng-options="item.value as item.name for item in MAP_DICT[condition.dictKeyBase]" ng-model="condition.value" name="{{condition.code}}">
										</select>
									</div>
								</div>
							</div>
							<div class="row">
								<div class="col-sm-12 col-sm-6 col-md-2">
									<div class="d-inline-flex align-items-center">
										<button class="btn btn-primary btn-sm ml-2" type="button" ng-click="radio.loadModalRadioGrid(1)"><i class="Hui-iconfont">&#xe665;</i>查询</button>
										<button class="btn btn-danger btn-sm ml-2" type="button" ng-click="radio.clearConditions()"><i class="Hui-iconfont">&#xe6a6;</i>清空</button>
									</div>
								</div>
							</div>
						</form>
					</div>
	
					<div class="table-responsive-sm table-responsive-md table-responsive-lg table-responsive-xl sticky-table" style="overflow: auto;">
						
						<table class="table table-border table-bordered table-sm table-hover table-sort table-responsive table-nowrap" style="font-size: 12px; white-space: nowrap; max-height: 60%;">
							<thead>
								<tr class="table-primary" style="text-align: center;">
									<th width="25"></th>
									<th ng-repeat="col in radio.colArr" width="{{col.width}}">{{col.title}}</th>
								</tr>
							</thead>
							<tbody>
								<tr ng-repeat="row in radio.rows" ng-dblclick="radio.doubleClick(row)" ng-click="radio.singleClick(row, $index)">
									<td><input type="radio" name="ys_sub_grid_radio" ng-model="row.ys_sub_grid_radio" ng-checked="row.ys_sub_grid_radio == true" ng-click="radio.selectedIndex = $index"></td>
									<td ng-repeat="col in radio.colArr">{{row[col.field]}}</td>
								</tr>
							</tbody>
						</table>
					</div>
					<div>
						<ul class="pagination pagination-sm justify-content-end" style="margin-top: 2px;">
						</ul>
						<ul class="pagination pagination-sm justify-content-end" style="margin-top: 2px;">
							<li class="page-item"><span class="page-link" href="#" style="border: none;">共有数据：{{radio.pagination.totalNum}}条，总页数：{{radio.pagination.totalPage}}页</span></li>
							<li class="page-item">
								<select ng-options="item.size as item.name for item in radio.pagination.optionArr" ng-model="radio.pagination.currentSize" ng-change="loadPage(1)" class="form-select form-select-sm">
								</select>
							</li>
							<li class="page-item"><a class="page-link" href="#" ng-if="radio.pagination.currentPage != 1" ng-click="radio.loadModalRadioGrid(1)">首页</a></li>
							<li class="page-item"><a class="page-link" href="#" ng-if="radio.pagination.currentPage != 1" ng-click="radio.loadModalRadioGrid(radio.pagination.currentPage - 1)">上一页</a></li>
							<li class="page-item" ng-repeat="pager in radio.pagination.pagerArr | limitTo : radio.pagination.totalPage" ng-class="{'active': pager.num == radio.pagination.currentPage}"><a class="page-link" href="#" ng-click="radio.loadModalRadioGrid(pager.num)">{{pager.num}}</a></li>
							<li class="page-item"><a class="page-link" href="#" ng-if="radio.pagination.currentPage != radio.pagination.totalPage" ng-click="radio.loadModalRadioGrid(radio.pagination.currentPage + 1)">下一页</a></li>
							<li class="page-item"><a class="page-link" href="#" ng-if="radio.pagination.currentPage != radio.pagination.totalPage" ng-click="radio.loadModalRadioGrid(radio.pagination.totalPage)">末页</a></li>
						</ul>
					</div>
				</div>
				<!-- 模态框底部 -->
				<div class="modal-footer">
					<button type="button" class="btn btn-success" ng-click="radio.confirm()">确定</button>
					<button type="button" class="btn btn-danger" data-bs-dismiss="modal">关闭</button>
				</div>
			</div>
		</div>
	</div>
	
	<!-- 多选弹出框 -->
	<div class="modal fade" id="modal_checkbox" ng-controller="YsModalCheckboxCtrl">
		<div class="modal-dialog" style="width: 90%; max-width: 1980px !important; height: 80%;">
			<div class="modal-content">
				<!-- 模态框头部 -->
				<div class="modal-header">
					<h4 class="modal-title">复选框标题</h4>
					<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
				</div>
				<!-- 模态框内容 -->
				<div class="modal-body" style="height: 80%;max-height: 70vh; overflow: auto;">
					<div>
						<form action="">
							<div class="row">
								<div class="col-sm-12 col-sm-6 col-md-2 mb-2" ng-repeat="condition in checkbox.conditions">
									<div class="d-inline-flex align-items-center" ng-if="condition.type == 't_text'">
										<label class="form-label form-label-ys-search">{{condition.name}}：</label>
										<input type="text" class="form-control form-control-ys-search" name="{{condition.code}}" required ng-model="condition.value">
									</div>
									<div class="d-inline-flex align-items-center" ng-if="condition.type == 't_dropdown'" style="width: 100%;">
										<label class="form-label form-label-ys-search">{{condition.name}}：</label>
										<select class="form-select form-select-sm form-select-ys-search" ng-options="item.value as item.name for item in MAP_DICT[condition.dictKeyBase]" ng-model="condition.value" name="{{condition.code}}">
										</select>
									</div>
								</div>
							</div>
							<div class="row">
								<div class="col-sm-12 col-sm-6 col-md-2">
									<div class="d-inline-flex align-items-center">
										<button class="btn btn-primary btn-sm ml-2" type="button" ng-click="checkbox.loadModalCheckboxGrid(1)"><i class="Hui-iconfont">&#xe665;</i>查询</button>
										<button class="btn btn-danger btn-sm ml-2" type="button" ng-click="checkbox.clearConditions()"><i class="Hui-iconfont">&#xe6a6;</i>清空</button>
									</div>
								</div>
							</div>
						</form>
					</div>

					<div style="width: 45%; float: left;">
						<div class="table-responsive-sm table-responsive-md table-responsive-lg table-responsive-xl sticky-table" style="overflow: auto; max-height: 50vh; height: 50vh;">
							
							<table class="table table-border table-bordered table-sm table-hover table-sort table-responsive table-nowrap" style="font-size: 12px; white-space: nowrap;">
								<thead>
									<tr class="table-primary" style="text-align: center;">
										<th width="25"><input type="checkbox" ng-model="checkbox.ys_sub_grid_checkbox_left_all" ng-checked="checkbox.ys_sub_grid_checkbox_left_all == true" ng-click="checkbox.checkAllLeft()"></th>
										<th ng-repeat="col in checkbox.colArr" width="{{col.width}}">{{col.title}}</th>
									</tr>
								</thead>
								<tbody>
									<tr ng-repeat="row in checkbox.rows" ng-dblclick="checkbox.doubleClickLeft(row)" ng-click="checkbox.singleClickLeft(row, $index)">
										<td><input type="checkbox" ng-model="row.ys_sub_grid_checkbox_left" ng-checked="row.ys_sub_grid_checkbox_left == true"></td>
										<td ng-repeat="col in checkbox.colArr">{{row[col.field]}}</td>
									</tr>
								</tbody>
							</table>
						</div>
						<div>
							<ul class="pagination pagination-sm justify-content-end" style="margin-top: 2px;">
							</ul>
							<ul class="pagination pagination-sm justify-content-end" style="margin-top: 2px;">
								<li class="page-item"><span class="page-link" href="#" style="border: none;">共有数据：{{checkbox.pagination.totalNum}}条，总页数：{{checkbox.pagination.totalPage}}页</span></li>
								<li class="page-item">
									<select ng-options="item.size as item.name for item in checkbox.pagination.optionArr" ng-model="checkbox.pagination.currentSize" ng-change="loadPage(1)" class="form-select form-select-sm">
									</select>
								</li>
								<li class="page-item"><a class="page-link" href="#" ng-if="checkbox.pagination.currentPage != 1" ng-click="checkbox.loadModalCheckboxGrid(1)">首页</a></li>
								<li class="page-item" ng-repeat="pager in checkbox.pagination.pagerArr | limitTo : checkbox.pagination.totalPage" ng-class="{'active': pager.num == checkbox.pagination.currentPage}"><a class="page-link" href="#" ng-click="checkbox.loadModalCheckboxGrid(pager.num)">{{pager.num}}</a></li>
								<li class="page-item"><a class="page-link" href="#" ng-if="checkbox.pagination.currentPage != checkbox.pagination.totalPage" ng-click="checkbox.loadModalCheckboxGrid(checkbox.pagination.totalPage)">末页</a></li>
							</ul>
						</div>
					</div>
					
					<div style="width: 10%; text-align: center;margin-top:10%; float: left;">
						<div>
							<button type="button" class="btn btn-outline-info btn-sm" ng-click="checkbox.leftToRight()">&gt;&gt;</button>
						</div>
						<div>
							<button type="button" class="btn btn-outline-info btn-sm" ng-click="checkbox.rightToLeft()">&lt;&lt;</button>
						</div>
					</div>

					<div style="width: 45%; float: right;">
						<div class="table-responsive-sm table-responsive-md table-responsive-lg table-responsive-xl sticky-table" style="overflow: auto; max-height: 50vh; height: 50vh;">
							
							<table class="table table-border table-bordered table-sm table-hover table-sort table-responsive table-nowrap" style="font-size: 12px; white-space: nowrap;">
								<thead>
									<tr class="table-primary" style="text-align: center;">
										<th width="25"><input type="checkbox" ng-model="checkbox.ys_sub_grid_checkbox_right_all" ng-checked="checkbox.ys_sub_grid_checkbox_right_all == true" ng-click="checkbox.checkAllRight()"></th>
										<th ng-repeat="col in checkbox.colArr" width="{{col.width}}">{{col.title}}</th>
									</tr>
								</thead>
								<tbody>
									<tr ng-repeat="row in checkbox.rowsSelected" ng-dblclick="checkbox.doubleClickRight($index)" ng-click="checkbox.singleClickRight(row, $index)">
										<td><input type="checkbox" name="ys_sub_grid_checkbox_right" ng-model="row.ys_sub_grid_checkbox_right" ng-checked="row.ys_sub_grid_checkbox_right == true"></td>
										<td ng-repeat="col in checkbox.colArr">{{row[col.field]}}</td>
									</tr>
								</tbody>
							</table>
						</div>
						<div>
							<ul class="pagination pagination-sm justify-content-end" style="margin-top: 2px;">
							</ul>
							<ul class="pagination pagination-sm justify-content-end" style="margin-top: 2px;">
								<li class="page-item"><span class="page-link" href="#" style="border: none;">已选数据：{{checkbox.rowsSelected.length}}条</span></li>
							</ul>
						</div>
					</div>
				</div>
				<!-- 模态框底部 -->
				<div class="modal-footer">
					<button type="button" class="btn btn-success" ng-click="checkbox.confirm()">确定</button>
					<button type="button" class="btn btn-danger" data-bs-dismiss="modal">关闭</button>
				</div>
			</div>
		</div>
	</div>
	
	<!-- 多文件弹出框 -->
	<style>
	.file-multy {
		position: relative;
		display: inline-block;
		border-radius: 4px;
		padding: 0;
		overflow: hidden;
		color: #1E88C7;
		text-decoration: none;
		text-indent: 0;
		line-height: 20px;
	}
	
	.file-multy input {
		cursor: pointer;
		position: absolute;
		font-size: 100px;
		left: 0;
		top: 0;
		opacity: 0;
		width: 60px;
		height: 31px;
	}
	 
	
	.file-multy:hover {
		background: #AADFFD;
		border-color: #78C3F3;
		color: #004974;
		text-decoration: none;
	}
	</style>
	<div class="modal fade" id="modal_multy" ng-controller="YsModalMultyCtrl">
		<div class="modal-dialog" style="width: 90%; max-width: 1980px !important; height: 80%;">
			<div class="modal-content">
				<!-- 模态框头部 -->
				<div class="modal-header">
					<h4 class="modal-title">多文件弹出框标题</h4>
					<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
				</div>
				<!-- 模态框内容 -->
				<div class="modal-body" style="height: 80%;max-height: 70vh; overflow: auto;">
	
					<div style="margin: 15px 0 5px 0;">
						<div class="file-multy">
							<input type="file" nv-file-select uploader="uploaderForMulty" options="{ ysfield: '{{multy.sourceCode}}' }" />
							<button type="button" class="btn btn-outline-success btn-sm"><i class="Hui-iconfont">&#xe604;</i>新增</button>
						</div>
						<div class="file-multy">
							<button type="button" class="btn btn-outline-danger btn-sm" ng-click="multy.doRemoveBatch()"><i class="Hui-iconfont">&#xe609;</i>删除</button>
						</div>
					</div>
					<div class="table-responsive-sm table-responsive-md table-responsive-lg table-responsive-xl sticky-table" style="overflow: auto; height: 55vh;">
						
						<table class="table table-border table-bordered table-sm table-hover table-sort table-responsive table-nowrap" style="font-size: 12px; white-space: nowrap; max-height: 60vh;">
							<thead>
								<tr class="table-primary" style="text-align: center;">
									<th width="25"><input type="checkbox" ng-model="multy.ys_multy_all" ng-checked="multy.ys_multy_all == true" ng-click="multy.checkAll()"></th>
									<th width="180">文件名</th>
									<th width="80">大小</th>
									<th width="120">类型</th>
									<th width="200">上传时间</th>
									<th width="240">操作</th>
								</tr>
							</thead>
							<tbody>
								<tr ng-repeat="row in multy.rows" ng-click="multy.singleClick(row, $index)">
									<td><input type="checkbox" name="ys_multy_checkbox" ng-model="row.ys_multy_checkbox" ng-checked="row.ys_multy_checkbox == true"></td>
									<td>{{row.preName}}</td>
									<td>{{row.fileSize}}</td>
									<td>{{row.sufName}}</td>
									<td>{{row.createTime}}</td>
									<td style="padding: 2px 5px; text-align: center;">
										<button type="button" class="btn btn-primary btn-sm" style="padding: 0 0.5rem;" ng-click="multy.doDownload(row.filePath)"><i class="Hui-iconfont" title="下载">&#xe640;</i></button>
										<button type="button" class="btn btn-danger btn-sm" style="padding: 0 0.5rem;" ng-click="multy.doRemoveSingle($index)"><i class="Hui-iconfont" title="删除">&#xe609;</i></button>
									</td>
								</tr>
							</tbody>
						</table>
					</div>
				</div>
				<!-- 模态框底部 -->
				<div class="modal-footer">
					<button type="button" class="btn btn-danger" data-bs-dismiss="modal">关闭</button>
				</div>
			</div>
		</div>
	</div>
	
	<!-- 确认框 -->
	<div class="modal fade" id="modal_confirm">
		<div class="modal-dialog" style="width: 50%; max-width: 980px !important; height: 80%;">
			<div class="modal-content">
				<!-- 模态框头部 -->
				<div class="modal-header">
					<h4 class="modal-title">提示</h4>
					<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
				</div>
				<!-- 模态框内容 -->
				<div class="modal-body" style="height: 80%;max-height: 70vh; overflow: auto;">
	
					<div style="margin: 15px 0 5px 0;">
						<p>{{confirm.tip}}</p>
					</div>
				</div>
				<!-- 模态框底部 -->
				<div class="modal-footer">
					<button type="button" class="btn btn-danger" ng-click="confirm.bsObj.hide()">关闭</button>
					<button type="button" class="btn btn-success" ng-click="confirm.ok()">确定</button>
				</div>
			</div>
		</div>
	</div>
</div>

<div th:fragment="YsModalLink">
	<style>
	.ng-cloak{display:none;}
	</style>
	<!-- 弹出框（页面） -->
	<div class="modal fade ng-cloak" id="modal_link" ng-cloak>
		<div class="modal-dialog" style="width: 80%; max-width: 1980px !important; height: 80%;">
			<div class="modal-content">
				<!-- 模态框头部 -->
				<div class="modal-header">
					<h4 class="modal-title">{{modalLink.title}}</h4>
					<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
				</div>
				<!-- 模态框内容 -->
				<div class="modal-body" style="height: 80vh;max-height: 80vh; overflow: auto;">
	
					<iframe id="modal_link_iframe" data-scrolltop="0" scrolling="yes" frameborder="0" style="width: 100%; height: 99%;"></iframe>
				</div>
			</div>
		</div>
	</div>
	<script type="text/javascript">
	window.bsModalLinkObj = new bootstrap.Modal(document.getElementById('modal_link'), {
		keyboard: false
	});
	</script>
</div>

<div th:fragment="YsModalDropdown">
	<!-- 弹出框（下拉选择） -->
	<div class="modal fade" id="modal_dropdown">
		<div class="modal-dialog" style="width: 80%; max-width: 1980px !important; height: 80%;">
			<div class="modal-content">
				<!-- 模态框头部 -->
				<div class="modal-header">
					<h4 class="modal-title">下拉弹出框标题</h4>
					<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
				</div>
				<!-- 模态框内容 -->
				<div class="modal-body" style="height: 70vh;max-height: 70vh; overflow: auto;">
				</div>
			</div>
		</div>
	</div>
</div>